﻿//*** Guidance generated code ***//
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Linq;

namespace ProjectBase.Core
{
    /// <summary>
    ///     Session abstraction
    /// </summary>
    public interface ISessionStorage
    {
        /// <summary>
        ///     abstract state storage for a session
        /// </summary>
        /// <param name = "key"></param>
        /// <returns></returns>
        object this[string key] { get; set; }

        /// <summary>
        ///     removes the key from the session
        /// </summary>
        /// <param name="key"></param>
        void Remove(string key);

        /// <summary>
        ///     Remove all keys from the session.
        ///     For instance this allows smoother recovery on any break down.
        /// </summary>
        void Clear();
    }
}